#ifndef HTTPMGR_H
#define HTTPMGR_H
#include"singleton.h"
#include<QString>
#include<QUrl>
#include<QObject>
#include<QNetworkAccessManager>
#include<QJniObject>
#include<QJsonDocument>
#include<global.h>

class HttpMgr:public QObject,public Singleton<HttpMgr>,public std::enable_shared_from_this<HttpMgr>
{
    Q_OBJECT
private:
    friend class Singleton<HttpMgr>;
    HttpMgr();//将 HttpMgr 类的构造函数设置为私有，主要是为了实现单例模式，确保在整个程序的生命周期内，HttpMgr 类只有一个实例存在。
    QNetworkAccessManager _manager;
    void slot_http_finish(ReqId id, QString res, ErrorCodes err, Modules mod);


public:
    ~HttpMgr();//若析构函数私有，智能指针无法调用，易造成资源泄漏。
    void PostHttpReq(QUrl url, QJsonObject json, ReqId req_id, Modules mod);//以及请求的id，以及哪个模块发出的请求mod


signals:
    void sig_http_finish(ReqId id, QString res, ErrorCodes err, Modules mod);
    void sig_reg_mod_finish(ReqId id, QString res, ErrorCodes err);
    void sig_reset_mod_finish(ReqId id, QString res, ErrorCodes err);
    void sig_login_mod_finish(ReqId id, QString res, ErrorCodes err);
};

#endif // HTTPMGR_H
